﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using LHS.Core.TableInfo;
using System.Collections;
using MS.Core.Constants.Objects;
using Word;
using System.IO;
using LHS.Win.Report;
using System.Drawing.Printing;

namespace LHS.Win
{
    public partial class frmTimHoSoBenhAn : Form
    {
        LHS.Core.Clinical.ClinicalController objController = new LHS.Core.Clinical.ClinicalController();
        // Methods
        public frmTimHoSoBenhAn()
        {
            this.InitializeComponent();
        }

        private void btExit_Click(object sender, EventArgs e)
        {
            base.Close();
        }

        private void btSearch_Click(object sender, EventArgs e)
        {
            ArrayList arrColumn = new ArrayList();
            arrColumn.Add(InfoPatients.PATISN);
            arrColumn.Add(InfoPatients.PATISN + " as STT");
            arrColumn.Add(InfoPatients.PATID);
            arrColumn.Add(InfoPatients.PATNAME);
            arrColumn.Add(InfoPatients.PATBIRTHDATE);
            arrColumn.Add(InfoPatients.PATADDRESS);
            arrColumn.Add(InfoPatients.PATSEX);
            arrColumn.Add(InfoPatients.PATMOBILE); //edit here 20090906
            List<ExpressionObject> param = new List<ExpressionObject>();
            if (this.rbAll.Checked) //search theo ngày
            {
                param.Add(new ExpressionObject(InfoClinicalRecord.CLREXAMINATIONDATE, this.dtpDate.Value.ToString("MM/dd/yyyy")));
                DataTable dt = objController.GetData("vw_SearchPatient", true, arrColumn, param);

                if (dt == null || dt.Rows.Count == 0)
                {
                    this.dataGrid1.DataSource = null;
                    MessageBox.Show("Hiện tại không có bệnh nhân khám vào ngày này!", "Không tìm thấy bệnh nhân", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                }
                else
                {
                    this.dataGrid1.Enabled = true;
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        dt.Rows[i]["STT"] = i + 1;
                    }
                    bindingSource1.DataSource = dt;
                    this.dataGrid1.DataSource = bindingSource1;
                    this.dataGrid1.ReadOnly = true;
                    this.dataGrid1.TableStyles.Clear();

                    this.loadDataGrid();
                }
            }
            else if (this.tbKeySearch.Text == "")
            {
                MessageBox.Show("Vui lòng nhập từ khóa để tìm kiếm!", "Lỗi tìm kiếm", MessageBoxButtons.OK, MessageBoxIcon.Hand);
            }
            else
            {
                if (this.rbID.Checked)
                {
                    param.Add(new ExpressionObject(InfoPatients.PATID, this.tbKeySearch.Text));
                }
                else if (this.rbCellPhone.Checked)//edit here 20090906
                {
                    param.Add(new ExpressionObject(InfoPatients.PATMOBILE, this.tbKeySearch.Text, ExpressionObject.eSelectOperator.LikeAll));
                }
                else 
                {
                    param.Add(new ExpressionObject(InfoPatients.PATNAME, this.tbKeySearch.Text, ExpressionObject.eSelectOperator.LikeAll));
                }
             
                DataTable dt = objController.GetData("vw_SearchPatient", true, arrColumn, param);
                if (dt == null || dt.Rows.Count == 0)
                {
                    MessageBox.Show("Không tìm thấy bệnh nhân", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    if (MessageBox.Show("Bạn có muốn lập bệnh án mới không?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        if (UserInformation.usrRole == "2")
                        {
                            frmLapHSBenhAnYTa ta = new frmLapHSBenhAnYTa();
                            ta.ShowInTaskbar = false;
                            ta.ShowDialog(this);
                        }
                        else
                        {
                            frmLapHoSoBenhAn an = new frmLapHoSoBenhAn();
                            an.ShowInTaskbar = false;
                            an.ShowDialog(this);
                        }
                    }
                }
                else
                {
                    this.dataGrid1.Enabled = true;
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        dt.Rows[i]["STT"] = i + 1;
                    }
                    bindingSource1.DataSource = dt;
                    this.dataGrid1.DataSource = bindingSource1;
                    this.dataGrid1.ReadOnly = true;
                    this.dataGrid1.TableStyles.Clear();

                    this.loadDataGrid();
                }
            }
            this.tbKeySearch.Focus();
        }

        private void dataGrid1_MouseUp(object sender, MouseEventArgs e)
        {
            if ((this.dataGrid1.DataSource != null) && (e.Button == MouseButtons.Left))
            {
                this.dataGrid1.Select(this.dataGrid1.CurrentRowIndex);
                if (MessageBox.Show("Bạn có muốn xem hồ sơ của bệnh nhân này không?", "Xem hồ sơ bệnh nhân", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    this.ISN = dataGrid1[this.dataGrid1.CurrentRowIndex, 0].ToString();
                    List<ExpressionObject> param = new List<ExpressionObject>();
                    param.Add(new ExpressionObject(InfoPatients.PATISN, this.ISN));
                    DataTable dt = objController.GetData("vw_SearchClinicalRecord", param);

                    if (dt == null || dt.Rows.Count == 0)
                    {
                        this.NhanBiet = "0";
                    }
                    else if (dt.Rows[0][InfoClinicalRecord.CLREXAMINATIONTIMES].ToString() == "" || dt.Rows[0][InfoClinicalRecord.CLREXAMINATIONTIMES].ToString() == string.Empty)
                    {
                        this.NhanBiet = "0";
                        this.clrISN = dt.Rows[0][InfoClinicalRecord.CLRISN].ToString();
                    }
                    else
                    {
                        this.NhanBiet = "1";
                    }
                    if (UserInformation.usrRole == "1")
                    {
                        frmHoSoBenhAn an = new frmHoSoBenhAn(this.clrISN, this.NhanBiet, this.ISN);
                        an.ShowInTaskbar = false;
                        an.ShowDialog(this);
                    }
                    else
                    {
                        frmYTaLapMoi moi = new frmYTaLapMoi(this.clrISN, this.NhanBiet, this.ISN);
                        moi.ShowInTaskbar = false;
                        moi.ShowDialog();
                    }
                }
            }
        }

        private void frmTimHoSoBenhAn_Load(object sender, EventArgs e)
        {
            this.dtpDate.Value = DateTime.Now;
            ArrayList arrColumn = new ArrayList();
            arrColumn.Add(InfoPatients.PATISN);
            arrColumn.Add(InfoPatients.PATISN + " as STT");
            arrColumn.Add(InfoPatients.PATID);
            arrColumn.Add(InfoPatients.PATNAME);
            arrColumn.Add(InfoPatients.PATBIRTHDATE);
            arrColumn.Add(InfoPatients.PATADDRESS);
            arrColumn.Add(InfoPatients.PATSEX);
            arrColumn.Add(InfoPatients.PATMOBILE); //edit here 20090906
            List<ExpressionObject> param = new List<ExpressionObject>();
            param.Add(new ExpressionObject(InfoClinicalRecord.CLREXAMINATIONDATE, DateTime.Now.ToString("MM/dd/yyyy")));
            DataTable dt = objController.GetData("vw_SearchPatient", true, arrColumn, param);

            if (dt == null || dt.Rows.Count == 0)
            {
                this.dataGrid1.Enabled = false;
            }
            else
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    dt.Rows[i]["STT"] = i + 1;
                }

                this.dataGrid1.Enabled = true;
                bindingSource1.DataSource = dt;
                this.dataGrid1.DataSource = bindingSource1;
                this.dataGrid1.TableStyles.Clear();
                this.loadDataGrid();
            }
          
            this.tbKeySearch.Focus();
        }

        public void loadDataGrid()
        {
            this.dataGrid1.CaptionText = "Danh sách Nhân Viên";
            DataGridTableStyle table = new DataGridTableStyle();
            table.MappingName = "vw_SearchPatient";
            table.AlternatingBackColor = Color.AliceBlue;
            table.HeaderForeColor = Color.Maroon;
            table.GridLineColor = Color.CornflowerBlue;
            table.AllowSorting = false;
            DataGridTextBoxColumn column = new DataGridTextBoxColumn();//0
            column.MappingName = InfoPatients.PATISN;
            column.HeaderText = "";
            column.Width = 0;
            table.GridColumnStyles.Add(column);
            DataGridTextBoxColumn column2 = new DataGridTextBoxColumn();//1
            column2.MappingName = "STT";
            column2.HeaderText = " STT";
            column2.Width = 50;
            table.GridColumnStyles.Add(column2);
            DataGridTextBoxColumn column3 = new DataGridTextBoxColumn();
            column3.MappingName = InfoPatients.PATID;
            column3.HeaderText = "Số ID";
            column3.Width = 60;
            table.GridColumnStyles.Add(column3);
            DataGridTextBoxColumn column4 = new DataGridTextBoxColumn();
            column4.MappingName = InfoPatients.PATNAME;
            column4.HeaderText = "Tên Bệnh Nhân";
            column4.Width = 220;
            table.GridColumnStyles.Add(column4);
            DataGridTextBoxColumn column5 = new DataGridTextBoxColumn();
            column5.MappingName = InfoPatients.PATBIRTHDATE;
            column5.HeaderText = "Ngày Sinh";
            column5.Width = 90;
            table.GridColumnStyles.Add(column5);
            DataGridTextBoxColumn column8 = new DataGridTextBoxColumn();
            column8.MappingName = InfoPatients.PATMOBILE;
            column8.HeaderText = "Di Động";
            column8.Width = 90;
            table.GridColumnStyles.Add(column8);
            DataGridTextBoxColumn column6 = new DataGridTextBoxColumn();
            column6.MappingName = InfoPatients.PATADDRESS;
            column6.HeaderText = "Địa Chỉ";
            column6.Width = 200;
            table.GridColumnStyles.Add(column6);
            DataGridTextBoxColumn column7 = new DataGridTextBoxColumn();
            column7.MappingName = InfoPatients.PATSEX;
            column7.HeaderText = "Giới tính";
            column7.Width = 0x51;
            table.GridColumnStyles.Add(column7);
            this.dataGrid1.TableStyles.Add(table);
        }
    }
}